package my.graduation.controller.patient;

import my.graduation.dto.*;
import my.graduation.result.Result;
import my.graduation.service.PatientService;
import my.graduation.vo.PatientLoginVO;
import my.graduation.vo.PatientVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: RavenLyn
 * @Date: 2024-11-29
 */
@RestController
@RequestMapping("/patient")
public class PatientController {

    @Autowired
    private PatientService patientService;

    /**
     * 患者登录
     * @param dto
     * @return
     */
    @PostMapping("/login")
    public Result<PatientLoginVO> patientLogin(@RequestBody PatientLoginDto dto){
        return patientService.login(dto);
    }

    /**
     * 患者登出
     * @param dto
     * @return
     */
    @PostMapping("/logout")
    public Result patientLogout(@RequestBody PatientLogoutDto dto){
        return patientService.logout(dto);
    }

    /**
     * 患者注册
     * @param dto
     * @return
     */
    @PostMapping("/register")
    public Result patientRegister(@RequestBody PatientRegisterDto dto){
        return patientService.register(dto);
    }

    /**
     * 患者忘记密码
     * @param dto
     * @return
     */
    @PostMapping("/forget")
    public Result patientForget(@RequestBody PatientForgetDto dto){
        return patientService.forget(dto);
    }

    /**
     * 患者获取个人信息
     * @param dto
     * @return
     */
    @PostMapping("/personal")
    public Result<PatientVO> getPersonal(@RequestBody PatientInfoDto dto){
        return patientService.getPersonal(dto);
    }

    /**
     * 患者修改个人信息
     * @param dto
     * @return
     */
    @PutMapping("/modify")
    public Result modifyPersonal(@RequestBody PatientInfoDto dto){
        return patientService.update(dto);
    }

    /**
     * 患者修改密码
     * @param dto
     * @return
     */
    @PostMapping("/repass")
    public Result repass(@RequestBody RepassDto dto) {
        return patientService.repass(dto);
    }

    /**
     * 获取该患者待就诊 / 检查的所有项目个数
     * @param dto
     * @return
     */
    @PostMapping("/count")
    public Result<Integer> getCount(@RequestBody PatientInfoDto dto){
        return patientService.getCount(dto);
    }
}
